using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using AccesoDatos;
using Entidades;

namespace Negocio.Negocio
{
    // Clase de negocio
    class VentaServiciosAdicionales
    {
        public DataTable listaVentaServiciosAdicionales(int codigoCliente, String fechaVtaInicio, String fechaVtaFin,
                                                    String fechaEvtoInicio, String fechaEvtoFin, String estadoVta)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();
                Object[,] parmSP = { 
                                    {"@codigoCliente", SqlDbType.SmallInt, 5, codigoCliente},
                                    {"@fechaVtaInicio", SqlDbType.Char, 8, fechaVtaInicio},
                                    {"@fechaVtaFin", SqlDbType.Char, 8, fechaVtaFin},
                                    {"@fechaEvtoInicio", SqlDbType.Char, 8, fechaEvtoInicio},
                                    {"@fechaEvtoFin", SqlDbType.Char, 8, fechaEvtoFin},
                                    {"@estadoVta", SqlDbType.Char, 1, estadoVta},
                          };
                //oSql.ExecNonQuery(oRutGen.CadenaConexion(), nombreSP, paramSP);
                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_VentaServicioAdicional", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("listaVentaAlojamiento() - " + ex.Message);
            }
        }

        public DataTable insertaVtaServAdicionales(string fechaEvento, string horaInicioEvento, string horaFinEvento, int capacidadMaxima,
                                            int cantidadPersonas, int cantidadMesas,
                                 string descripcionGeneral, string descripcionMenu, int montoSinIGV, int codigoSala, int codigoTipoEvento, int codigoVenta,
                                 int paqueteID, int tipoServicioAdicional, int montoConIGV)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@fechaEvento", SqlDbType.DateTime, 30, Convert.ToDateTime(fechaEvento)},
                    {"@horaInicioEvento", SqlDbType.DateTime, 30, Convert.ToDateTime(horaInicioEvento)},
                    {"@horaFinEvento", SqlDbType.DateTime, 20, Convert.ToDateTime(horaFinEvento)},
                    {"@capacidadMaxima", SqlDbType.Int, 4, capacidadMaxima},
                    {"@cantidadPersonas", SqlDbType.Int, 30, cantidadPersonas},
                    {"@cantidadMesas", SqlDbType.Int, 4, cantidadMesas},
                    {"@descripcionGeneral", SqlDbType.VarChar , 30, descripcionGeneral},
                    {"@descripcionMenu", SqlDbType.VarChar, 30, descripcionMenu},
                    {"@montoSinIGV", SqlDbType.Decimal, 15, montoSinIGV},
                    {"@codigoSala", SqlDbType.Int, 4, codigoSala},
                    {"@codigoTipoEvento", SqlDbType.Int, 4, codigoTipoEvento},
                    {"@codigoVenta", SqlDbType.Int, 4, codigoVenta},
                    {"@paqueteID", SqlDbType.Int, 4, paqueteID},
                    {"@tipoServicioAdicional", SqlDbType.Int, 4, tipoServicioAdicional},
                    {"@montoConIGV", SqlDbType.Decimal, 15, montoConIGV},
                };

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_INS_VentaServicioAdicional", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("insertaVtaServAdicionales() - " + ex.Message);
            }
        }

        // Inserta un registro de venta de servicio extra
        public DataTable insertaVtaServExtras(string item, decimal montoServicioSinIGV, string descripcionAdicional, 
            int codigoVenta, int codigoServicioExtra, int cantidadServicioExtra, decimal montoServicioConIGV)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@item", SqlDbType.VarChar, 6, item},
                    {"@montoServicioSinIGV", SqlDbType.Decimal, 15, montoServicioSinIGV},
                    {"@descripcionAdicional", SqlDbType.VarChar, 30, descripcionAdicional},
                    {"@codigoVenta", SqlDbType.Int, 4, codigoVenta},
                    {"@codigoServicioExtra", SqlDbType.Int, 4, codigoServicioExtra},
                    {"@cantidadServicioExtra", SqlDbType.Int, 4, cantidadServicioExtra},
                    {"@montoServicioConIGV", SqlDbType.Decimal, 15, montoServicioConIGV},
                };

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_INS_VentaServicioExtraDetalle", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("insertaVtaServExtras() - " + ex.Message);
            }
        }
    }
}
